【文件上传绕过】 |
您所在的位置:网站首页 › apache 正则 › 【文件上传绕过】 |
文章目录
一、实验目的:二、工具:三、实验环境:四、Apache 解析漏洞:1. 漏洞原理:2. 影响版本:3. 实验过程:3.1 模拟实验:3.2 upload-labs闯关游戏(Pass-04):
五、其余配置问题导致的漏洞:
一、实验目的:
1、通过本次实验掌握apache解析漏洞原理。 2、通过upload-labs-master闯关游戏Pass-04,掌握apache解析漏洞技术。 二、工具:火狐/谷歌浏览器 三、实验环境:靶 机: windows10虚拟机:192.168.15.133 upload-labs-master闯关游戏 phpstudy2013搭建网站 Apache服务器(wamp2.0) 攻击机: 物理机 四、Apache 解析漏洞: 1. 漏洞原理:Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如test.php.a.b的“.a”和“.b”这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php。 2. 影响版本:apache 1.x apache 2.2.x 查看apache版本: 打开服务器的Apache\bin目录,复制目录地址: 进入命令行,切换到D:盘,cd到上面复制的路径下,输入下面命令: 命令: httpd -v //查看apache版本信息1、在www目录下创建名为1.php.a.b的文件: 内容为:
页面源码: $is_upload = false; $msg = null; //判断文件上传操作 if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { //检查服务器上传目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。 $deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf"); //声明一个数组,里面存放着文件上传的后缀名黑名单。 $file_name = trim($_FILES['upload_file']['name']); //移除上传文件名两端空白字符或其他预定义字符 $file_name = deldot($file_name);//删除文件名末尾的点 $file_ext = strrchr($file_name, '.'); //截取文件后缀名,从点最后出现的位置开始截取。 $file_ext = strtolower($file_ext); //所有的字符转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //首尾去空 if (!in_array($file_ext, $deny_ext)) { //和黑名单里面的进行对比,判断后缀名是否在黑名单里面,如果不在黑名单里面,就获得获取图片的临时存储路径 $temp_file = $_FILES['upload_file']['tmp_name']; //获取图片的临时存储路径 $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext; //重构文件路径和文件名 if (move_uploaded_file($temp_file, $img_path)) { //对文件进行转存 $is_upload = true; } else { $msg = '上传出错!'; } } else { $msg = '此文件不允许上传!'; } } else { $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!'; } }代码处理流程:声明一个数组,里面存放着文件上传的后缀名黑名单-->获得上传文件的后缀名,并移除两端空白字符-->删除文件名末尾的点-->截取文件后缀名-->所有的字符转换为小写-->去除字符串::$DATA-->首尾去空-->进行判断,如果不在黑名单里面就获取图片的临时存储路径-->重构文件路径和文件名-->对文件进行转存 1、上传上面创建的1.php.a.b文件到服务器,并复制图片链接,进行访问:
1、如果在 Apache 的conf里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是test2.php.jpg也会以php 来执行。 修改配置文件: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |